// 寻找一个数
/*
int binarySearch(int[] nums, int target) {
  int left = 0;
  int right = nums.length - 1; // 注意

  while(left <= right) {
      int mid = left + (right - left) / 2;
      if(nums[mid] == target)
          return mid;
      else if (nums[mid] < target)
          left = mid + 1; // 注意
      else if (nums[mid] > target)
          right = mid - 1; // 注意
  }
  return -1;
}
寻找左侧边界的二分搜索
int left_bound(int[] nums, int target) {
    if (nums.length == 0) return -1;
    int left = 0;
    int right = nums.length; // 注意

    while (left < right) { // 注意
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            right = mid;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid; // 注意
        }
    }
    return left;
}
寻找左侧边界的二分搜索
int right_bound(int[] nums, int target) {
    if (nums.length == 0) return -1;
    int left = 0, right = nums.length;

    while (left < right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            left = mid + 1; // 注意
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid;
        }
    }
    return left - 1; // 注意
}
*/